Problem Note 35112: Invalid binary data when transferring SAS data sets with PROC COPY or CPORT/CIMPORT
MXG makes extensive use of DATA step views and binary data in character fields with $HEXw. and user-written MXG hex formats. The format indicates that the information in the character variable is not character, but binary or hex data.
This data should not be modifed by the transport process when moving from one platform to another.
TRANSCODE=NO is required to move character variables containing HEX values that are not to be translated during the transport process. Previously, SAS Views did not honor the TRANSCODE=NO parameter
To make this happen, permanently specify the variable attribute on the SAS data set of TRANSCODE=NO with an ATTRIB statement. Many procedures do not allow the ATTRIB for a varible to be specified on a temporary basis.
When this data set is the basis of a SAS DATA step view, the TRANSCODE attribute must be reflected in the view.
Run the sample code to see the effect of the problem.
If you cannot install the HOTFIX, here
are two work-arounds for this problem:
- Do not use a DATA step view.
- Convert the SAS data set to an external file, use FTP in binary mode to transfer the data set to the new platform, read the external data set, rebuild the SAS data set and indexes (if any) on the new platform.
Operating System and Release Information
SAS System | Base SAS | z/OS | 9.1 TS1M3 SP4 | 9.2 TS2M2 |
Microsoft® Windows® for 64-Bit Itanium-based Systems | 9.1 TS1M3 SP4 | 9.2 TS2M2 |
Microsoft Windows Server 2003 Datacenter 64-bit Edition | 9.1 TS1M3 SP4 | 9.2 TS2M2 |
Microsoft Windows Server 2003 Enterprise 64-bit Edition | 9.1 TS1M3 SP4 | 9.2 TS2M2 |
Microsoft Windows XP 64-bit Edition | 9.1 TS1M3 SP4 | 9.2 TS2M2 |
Microsoft Windows 2000 Advanced Server | 9.1 TS1M3 SP4 | |
Microsoft Windows 2000 Datacenter Server | 9.1 TS1M3 SP4 | |
Microsoft Windows 2000 Server | 9.1 TS1M3 SP4 | |
Microsoft Windows 2000 Professional | 9.1 TS1M3 SP4 | |
Microsoft Windows NT Workstation | 9.1 TS1M3 SP4 | |
Microsoft Windows Server 2003 Datacenter Edition | 9.1 TS1M3 SP4 | 9.2 TS2M2 |
Microsoft Windows Server 2003 Enterprise Edition | 9.1 TS1M3 SP4 | 9.2 TS2M2 |
Microsoft Windows Server 2003 Standard Edition | 9.1 TS1M3 SP4 | 9.2 TS2M2 |
Microsoft Windows XP Professional | 9.1 TS1M3 SP4 | 9.2 TS2M2 |
Windows Vista | 9.1 TS1M3 SP4 | 9.2 TS2M2 |
64-bit Enabled AIX | 9.1 TS1M3 SP4 | 9.2 TS2M2 |
64-bit Enabled HP-UX | 9.1 TS1M3 SP4 | 9.2 TS2M2 |
64-bit Enabled Solaris | 9.1 TS1M3 SP4 | 9.2 TS2M2 |
HP-UX IPF | 9.1 TS1M3 SP4 | 9.2 TS2M2 |
Linux | 9.1 TS1M3 SP4 | 9.2 TS2M2 |
Linux on Itanium | 9.1 TS1M3 SP4 | 9.2 TS2M2 |
OpenVMS Alpha | 9.1 TS1M3 SP4 | 9.2 TS2M2 |
Solaris for x64 | 9.1 TS1M3 SP4 | 9.2 TS2M2 |
Tru64 UNIX | 9.1 TS1M3 SP4 | 9.2 TS2M2 |
*
For software releases that are not yet generally available, the Fixed
Release is the software release in which the problem is planned to be
fixed.
Sample code to test for problem.
proc datasets mt=view kill; /* get rid of existing views in WORK library */
data original;
hexvar='80'X;
format hexvar $HEX2. ;
attrib hexvar TRANSCODE=NO;
charvar = '1';
cecser='123456'X;
format cecser $HEX6.;
attrib cecser TRANSCODE=NO;
startime=10;
/* create DATA step view */
data testview/view = testview;
set original;
proc printto print='c:\saslogs\t188972.txt';
run;
proc contents data = original;
title contents of original data set;
run;
proc contents data = testview;
title 'testview - created by DATA step';
proc sort data = testview out=sorted;
by cecser startime;
run;
proc contents data = sorted;
title 'sorted output from testview';
run;
proc sql noprint;
create table vrefs
as select name,libname,memname,transcode
from dictionary.columns
where libname='WORK';
quit;
proc print;
title 'dictionary.columns';
run;
proc printto print=print; run;
contents of original data set 5
16:57 Thursday, March 12, 2009
The CONTENTS Procedure
Data Set Name WORK.ORIGINAL Observations 1
Member Type DATA Variables 4
Engine V9 Indexes 0
Created Thursday, March 12, Observation Length 16
2009 04:57:41 PM
Last Modified Thursday, March 12, Deleted Observations 0
2009 04:57:41 PM
Protection Compressed NO
Data Set Type Sorted NO
Label
Data Representation WINDOWS_32
Encoding wlatin1 Western
(Windows)
Engine/Host Dependent Information
Data Set Page Size 4096
Number of Data Set Pages 1
First Data Page 1
Max Obs per Page 252
Obs in First Data Page 1
Number of Data Set Repairs 0
Filename C:\DOCUME~1\sasjrs\LOCALS~1\Temp\SAS
Temporary Files\_TD536\original.sas7bdat
Release Created 9.0201M0
Host Created XP_PRO
Alphabetic List of Variables and Attributes
# Variable Type Len Format Transcode
3 cecser Char 3 $HEX6. NO
2 charvar Char 1 YES
1 hexvar Char 1 $HEX2. NO
4 startime Num 8 YES
testview - created by DATA step 6
16:57 Thursday, March 12, 2009
The CONTENTS Procedure
Data Set Name WORK.TESTVIEW Observations .
Member Type VIEW Variables 4
Engine SASDSV Indexes 0
Created Thursday, March 12, Observation Length 13
2009 04:57:41 PM
Last Modified Thursday, March 12, Deleted Observations 0
2009 04:57:41 PM
Protection Compressed NO
Data Set Type Sorted NO
Label
Data Representation Default
Encoding Default
Engine/Host Dependent Information
DATA Step view type INPUT
Alphabetic List of Variables and Attributes
# Variable Type Len Format
3 cecser Char 3 $HEX6.
2 charvar Char 1
1 hexvar Char 1 $HEX2.
4 startime Num 8
sorted output from testview 7
16:57 Thursday, March 12, 2009
The CONTENTS Procedure
Data Set Name WORK.SORTED Observations 1
Member Type DATA Variables 4
Engine V9 Indexes 0
Created Thursday, March 12, Observation Length 16
2009 04:57:42 PM
Last Modified Thursday, March 12, Deleted Observations 0
2009 04:57:42 PM
Protection Compressed NO
Data Set Type Sorted YES
Label
Data Representation WINDOWS_32
Encoding wlatin1 Western
(Windows)
Engine/Host Dependent Information
Data Set Page Size 4096
Number of Data Set Pages 1
First Data Page 1
Max Obs per Page 252
Obs in First Data Page 1
Number of Data Set Repairs 0
Filename C:\DOCUME~1\sasjrs\LOCALS~1\Temp\SAS
Temporary Files\_TD536\sorted.sas7bdat
Release Created 9.0201M0
Host Created XP_PRO
Alphabetic List of Variables and Attributes
# Variable Type Len Format
3 cecser Char 3 $HEX6.
2 charvar Char 1
1 hexvar Char 1 $HEX2.
4 startime Num 8
Sort Information
Sortedby cecser startime
Validated YES
Character Set ANSI
dictionary.columns 8
16:57 Thursday, March 12, 2009
Obs name libname memname transcode
1 hexvar WORK ORIGINAL no
2 charvar WORK ORIGINAL yes
3 cecser WORK ORIGINAL no
4 startime WORK ORIGINAL yes
5 hexvar WORK SORTED yes
6 charvar WORK SORTED yes
7 cecser WORK SORTED yes
8 startime WORK SORTED yes
9 hexvar WORK TESTVIEW yes
10 charvar WORK TESTVIEW yes
11 cecser WORK TESTVIEW yes
12 startime WORK TESTVIEW yes
13 name WORK VREFS yes
14 libname WORK VREFS yes
15 memname WORK VREFS yes
16 transcode WORK VREFS yes
This affects MXG users who tranport data from one platform to another. TRANSCODE=NO is required to prevent character HEX values from being translated.
Type: | Problem Note |
Priority: | alert |
Topic: | Data Management ==> Access ==> SAS I/O Data Management ==> Administration Data Management ==> Data Sources ==> SAS Data Sets/Tables SAS Reference ==> Formats ==> Character ==> $HEX SAS Reference ==> Procedures ==> CIMPORT SAS Reference ==> Procedures ==> COPY SAS Reference ==> Procedures ==> CPORT
|
Date Modified: | 2009-05-05 16:37:13 |
Date Created: | 2009-03-12 11:42:58 |